#include <iostream>
#include <string>
#include <math.h>

using namespace std;

class Float {
	public:
		Float(int precision, long double value);
		~Float();
		const int getExp() const;
		const string getMant() const;
		const int getPrecision() const;
		const long double getValue() const;
		const string getSigno() const;
		Float operator+ (Float aFloat);
		Float operator- (Float aFloat);
		Float operator/ (Float aFloat);
		Float operator* (Float aFloat);
		Float & operator= (const Float &);
		
		friend int operator== (const Float&, const Float&);
		friend int operator!= (const Float&, const Float&);
		friend ostream &operator<<(ostream &stream, Float &ob);
	private:
		void longDoubleToBinary(long double);
		long double binaryToLongDouble();
		//signo si es negativo el numero
		bool _neg;
		//representa el valor al cual esta elevado el 2, o sea 2^exp.
		int _exp;
		//cant. de bits que se usan en la mantisa.
		int _precision;
		//representacion en binario de la mantisa.
		string _mant;
		//valor con el que se trabaja.
		long double _value;
};
